perm filename CALIB.SAI[LOU,BGB] blob sn#006790 filedate 1974-12-08 generic text, type T, neo UTF8
00100	BEGIN "CALIB"
00200	EXTERNAL PROCEDURE ARM_JOINT;
00300	REQUIRE "VECTOR.SAI[SYS,HE]" SOURCE_FILE;
00400	REQUIRE "INTFAC.REL[SYS,HE]" LOAD_MODULE;
00500	INTEGER J,I,BREAK,EOF;
00600	REAL R;
00700	INTERNAL INTEGER ARRAY ARM_VECTOR[1:7];
00800	REAL ARRAY POINTS [1:4];
00900	PRELOAD_WITH -1.322907, 0.951153, 5.956624,-1.523938, 1.270145,-1.576950;
01000	REAL ARRAY CSCALE[1:6];
01100	PRELOAD_WITH  2.327725,-4.252370, 2.573889, 3.388225,-2.919922, 4.413422;
01200	REAL ARRAY OFF[1:6];
01300	LABEL NEXT;
01400	STRING S,RF;
01500	DEFINE TTY="1",TYPE="OUTSTR(",STAR="&CRLF);OUTSTR(""*"")";
01600	DEFINE EOM=")";
01700	DEFINE HEAD="1",ID="2";
01800	SETBREAK(HEAD,"ABCDEFGHIJKLMNOPQRSTUVWXYZ",NULL,"INR");
01900	SETBREAK(ID,"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_",NULL,"XN");
02000	OPEN(TTY,"TTY",0,2,0,120,BREAK,EOF);
02100	OPEN(2,"DSK",0,0,2,128,BREAK,EOF);
02200	OPEN(5,"DSK",0,2,0,128,BREAK,EOF);
02300	WHILE TRUE DO BEGIN
02400		TYPE "RECORD FILE NAME" STAR;
02500		INPUT(TTY,HEAD);RF←INPUT(TTY,ID)&".REC";
02600		LOOKUP(5,RF,EOF);
02700		IF EOF THEN BEGIN ENTER(2,RF,EOF);DONE END;
02800		TYPE"FILE ALREADY EXISTS, DELETE Y, CONCATENTATE C ?" STAR;
02900		INPUT(TTY,HEAD);S←INPUT(TTY,ID);
03000		IF S="C" THEN BEGIN
03100			ENTER(2,RF,EOF);
03200			DO BEGIN S←INPUT(5,0);
03300				OUT(2,S);
03400			END UNTIL EOF;
03500			DONE;
03600		END;
03700		IF S="Y" THEN BEGIN
03800			ENTER(2,RF,EOF);
03900			DONE;
04000		END;
04100	END;
04200	WHILE TRUE DO BEGIN "MAIN"
04300	TYPE NULL STAR;
04400	J←INTIN(TTY);
04500	IF ¬J THEN DONE;
04600	IF J<1 ∨ J>6 THEN
04700	BEGIN"CLOSE"
04800		CLOSE (5);
04900		CLOSE(2);
05000		LOOKUP(5,RF,EOF);
05100		ENTER(2,RF,EOF);
05200		DO BEGIN	S←INPUT(5,0);
05300			OUT(2,S);
05400		END UNTIL EOF;
05500		GO TO NEXT;
05600	END "CLOSE";
05700	ARM_JOINT;
05800	IF ARM_VECTOR[J]<'100+1000 ∨ ARM_VECTOR[J]>'17700+1000 THEN TYPE "JOINT OUT OF RANGE" EOM ELSE BEGIN "GOOD"
05900	SETFORMAT(4,0);
06000	OUT(2,CVS(J));
06100	SETFORMAT(10,0);
06200	OUT(2,S←CVS(ARM_VECTOR[J]));
06300	SETFORMAT(12,2);
06400	R←OFF[J]+CSCALE[J]*ARM_VECTOR[J]/'4000;
06500	IF J≠3 THEN R←R*RAD;
06600	TYPE CVF(R) EOM;
06700	IF J=1 THEN BEGIN "ONE"
06800		FOR I←1 STEP 1 UNTIL 4 DO BEGIN 
06900			POINTS[I]←REALIN(TTY);
07000			OUT(2,CVF(POINTS[I]));
07100		END;
07200		S←S&CVF(RAD*ATAN2(POINTS[4]-POINTS[2],POINTS[3]-POINTS[1]));
07300	END "ONE" ELSE OUT(2,CVF(REALIN(TTY)));
07400	OUT(2,CRLF);
07500	TYPE S EOM;
07600	END "GOOD";
07700	NEXT:END"MAIN";
07800	RELEASE(5);
07900	RELEASE(2);
08000	END;